/*
 * VistaFondo.cpp
 *
 *  Created on: 25/11/2009
 *      Author: luis
 */

#include "VistaFondo.h"

VistaFondo::VistaFondo() {
	imagen_fondo_ = Gdk::Pixbuf::create_from_file (IMAGEN_FONDO);
}


void VistaFondo::pintar_fondo(Gtk::DrawingArea* area){
	Cairo::RefPtr<Cairo::Context> cr = area->get_window()->create_cairo_context();
	int x;
	int y;
	Gtk::Allocation allocation = area->get_allocation();
	const int width = allocation.get_width();
	const int height = allocation.get_height();
	//Pinto la imagen en estilo mosaico
	for (x = 0; x <= width; x+=TAMANIO){
		for (y=0; y<= height; y+=TAMANIO){
			Gdk::Cairo::set_source_pixbuf (cr, imagen_fondo_, x, y);
			cr->paint();
		}
	}
}


void VistaFondo::pintar_cuadro(int x, int y, Gtk::DrawingArea* area){
	Cairo::RefPtr<Cairo::Context> cr = area->get_window()->create_cairo_context();
	Gdk::Cairo::set_source_pixbuf (cr, imagen_fondo_, x, y);
	cr->paint();
}

void VistaFondo::pintar_fondo_en_contexto(Gtk::DrawingArea* area, Cairo::RefPtr<Cairo::Context> cr){
	int x;
	int y;
	Gtk::Allocation allocation = area->get_allocation();
	const int width = allocation.get_width();
	const int height = allocation.get_height();
	for (x = 0; x <= width; x+=TAMANIO){
		for (y=0; y<= height; y+=TAMANIO){
			Gdk::Cairo::set_source_pixbuf (cr, imagen_fondo_, x, y);
			cr->paint();
		}
	}
}

void VistaFondo::pintar_seleccion(int pos_x_inicial, int pos_y_inicial, int pos_x_fin,int pos_y_fin, Gtk::DrawingArea * area){
	Cairo::RefPtr<Cairo::Context> cr = area->get_window()->create_cairo_context();
	//Pongo el color en un tono verde
	cr->set_source_rgba(0,0.8,0, 0.7);
	cr->rectangle(pos_x_inicial, pos_y_inicial, pos_x_fin-pos_x_inicial, pos_y_fin-pos_y_inicial);
	cr->fill();
	cr->stroke();
}

VistaFondo::~VistaFondo() {

}
